package com.ants.boot.system.service;

import com.ants.boot.core.Response;
import com.ants.boot.system.domain.SysUser;
import com.ants.boot.system.dto.sysuser.*;
import com.ants.boot.system.vo.sysuser.LoginUserInfoVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @author 蚂蚁会花呗
 * @date 2021/11/26 14:55
 */
public interface SysUserService extends IService<SysUser> {

    /**
     * 根据用户名查询
     * @return
     */
    SysUser findByUsername(String username);


    /**
     * 根据手机号进行查询
     * @param phoneNumber
     * @return
     */
    SysUser findByPhoneNumber(String phoneNumber);

    /**
     * 根据用户id返回用户、角色、权限等信息
     * @param userId
     * @return
     */
    LoginUserInfoVo getUserInfo(Integer userId);

    /**
     * mybatis 分页
     * @param dto
     * @return
     */
    IPage<SysUser> pageInfo(QueryUserDto dto);

    /**
     * 新增用户
     * @param dto
     * @return
     */
    SysUser addUser(AddUserDto dto);

    /**
     * 更新用户信息
     * @param dto
     * @return
     */
    boolean updateUser(UpdateUserDto dto);

    /**
     * 删除用户
     * @param ids
     * @return
     */
    boolean delUser(List<Integer> ids);

    /**
     * 更新状态
     * @param roleId
     * @param status
     * @return
     */
    boolean updateStatus(Integer roleId,Integer status);

    /**
     * 重置密码
     * @param dto
     * @return
     */
    boolean resetPassword(ResetPasswordDto dto);

    /**
     * 上传头像
     * @param file
     * @return
     */
    String uploadAvatar(MultipartFile file);

    /**
     * 更新头像
     * @param dto
     * @return
     */
    boolean updateAvatar(UpdateAvatarDto dto);

    /**
     * 更新个人中心
     * @param dto
     * @return
     */
    boolean updateProfile(UpdateProfileDto dto);

    /**
     * 更新密码
     * @param dto
     * @return
     */
    Response updatePassword(UpdatePasswordDto dto);

    /**
     * 根据openid查询
     * @param openid
     * @return
     */
    SysUser findByOpenId(String openid);

}
